/**
 * 聚合通知相关类型定义
 */

/** 通知类型枚举 */
export enum NotificationGroupType {
  /** 关注 */
  FOLLOW = "FOLLOW",
  /** 点赞 */
  LIKE = "LIKE",
  /** 收藏 */
  COLLECT = "COLLECT",
  /** 评论 */
  COMMENT = "COMMENT",
  /** 回复 */
  REPLY = "REPLY",
  /** @提及 */
  MENTION = "MENTION",
  /** 系统通知 */
  SYSTEM = "SYSTEM"
}

/** 发送者信息 */
export interface NotificationSender {
  /** 用户ID */
  userId: number;
  /** 昵称 */
  nickName: string;
  /** 头像 */
  avatar: string;
  /** 最新操作时间 (升级后新增) */
  latestTime?: string;
}

/** 通知目标信息 */
export interface NotificationTargetInfo {
  /** 目标ID */
  id: number;
  /** 目标标题 */
  title: string;
  /** 内容摘要 */
  contentSummary?: string;
  /** 目标类型 */
  type: string;
  /** 目标URL (升级后新增，可直接跳转) */
  url?: string;
}

/** 聚合通知项 */
export interface GroupedNotification {
  /** 聚合键 格式: type_targetType_targetId */
  groupKey: string;
  /** 通知类型 */
  type: NotificationGroupType;
  /** 通知类型名称(中文) */
  typeName: string;
  /** 目标类型 */
  targetType: string;
  /** 目标ID */
  targetId: number;
  /** 目标信息 */
  target?: NotificationTargetInfo;
  /** 该组通知总数 */
  count: number;
  /** 该组未读数量 */
  unreadCount: number;
  /** 是否全部已读 */
  allRead: boolean;
  /** 聚合标题 */
  aggregatedTitle: string;
  /** 发送者列表(最多显示前几个) */
  senders: NotificationSender[];
  /** 其他发送者数量 */
  otherSendersCount: number;
  /** 最新通知时间 */
  latestTime: string;
}

/** 聚合通知列表查询参数 */
export interface GroupedNotificationQuery {
  /** 当前页码,默认1 */
  current?: number;
  /** 每页数量,默认20 */
  size?: number;
  /** 通知类型 */
  type?: NotificationGroupType;
  /** 是否已读 0-未读 1-已读 */
  isRead?: 0 | 1;
}

/** 评论详情 */
export interface CommentDetail {
  /** 评论ID */
  id: number;
  /** 评论内容 */
  content: string;
  /** 创建时间 */
  createTime: string;
  /** 点赞数 */
  likeCount: number;
  /** 回复数 */
  replyCount: number;
  /** 当前用户是否已点赞 */
  isLiked: boolean;
  /** 评论者信息 */
  commenter: NotificationSender;
  /** 回复的用户信息 */
  replyToUser?: NotificationSender;
}

/** 通知详情(与notification.ts中的类型一致) */
export interface NotificationDetailItem {
  /** 通知ID */
  id: number;
  /** 接收用户ID */
  userId: number;
  /** 发送者ID */
  senderId: number;
  /** 通知类型 */
  type: string;
  /** 通知类型名称 */
  typeName: string;
  /** 操作描述文本 */
  actionText: string;
  /** 通知标题 */
  title: string;
  /** 通知内容 */
  content: string;
  /** 目标类型 */
  targetType: string;
  /** 目标ID */
  targetId: number;
  /** 是否已读 0-未读 1-已读 */
  isRead: number;
  /** 阅读时间 */
  readTime: string | null;
  /** 创建时间 */
  createTime: string;
  /** 发送者信息 */
  sender: NotificationSender;
  /** 目标信息 */
  target: NotificationTargetInfo;
  /** 评论详情(评论/回复/点赞评论类型时包含) */
  commentDetail?: CommentDetail;
}

/** 分组详情查询参数 */
export interface GroupedDetailQuery {
  /** 通知类型 */
  type: NotificationGroupType;
  /** 目标类型 */
  targetType?: string;
  /** 目标ID */
  targetId?: number;
}

/** 标记分组已读参数 */
export interface MarkGroupReadParams {
  /** 通知类型 */
  type: NotificationGroupType;
  /** 目标类型 */
  targetType?: string;
  /** 目标ID */
  targetId?: number;
}
